package com.ruoyi.user.service;

import java.math.BigDecimal;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.basic.service.IBaseService;
import com.param.concat.IDiscountParam;
import com.param.concat.IUpdateByDuplicateCheckCoupon;
import com.param.concat.IUpdateByRecommend;
import com.ruoyi.user.domain.MgUser;

/**
 * 用户管理Service接口
 * 
 * @author ruoyi
 * @date 2023-12-19
 */
public interface IMgUserService extends IBaseService<MgUser>
{
	
	/**
	 * 
	 * @param user
	 * @return
	 */
	public int updateDuplicateCheckCoupon(IUpdateByDuplicateCheckCoupon user);

	public int updateDiscount(IDiscountParam user);
	
    public List<MgUser> selectListByRealname(@Param("realname") String realname);

	
	/**
	 * 获取用户
	 * @param <P>
	 * @param param
	 * @return
	 */
	public <P> List<MgUser> listBySearch(P param);
	
	
	/**
	 * 根据 id 数组 获取用户
	 * @param ids
	 * @return
	 */
	List<MgUser> getUserList(long[] ids);
	
	int updateRecharge(MgUser user);
	

	/**
	 * 更新金额
	 * @param bigDecimal
	 * @return
	 */
	public int updateAcademicCurrency(BigDecimal bigDecimal, int userId);
	
	/**
	 * 设置推荐人
	 * @param user
	 * @return
	 */
	public int updateRecommend(IUpdateByRecommend recommend);
    /**
     * 查询用户管理
     * 
     * @param id 用户管理主键
     * @return 用户管理
     */
    public MgUser selectMgUserById(String id);

    /**
     * 查询用户管理列表
     * 
     * @param mgUser 用户管理
     * @return 用户管理集合
     */
    public List<MgUser> selectMgUserList(MgUser mgUser);

    /**
     * 新增用户管理
     * 
     * @param mgUser 用户管理
     * @return 结果
     */
    public int insertMgUser(MgUser mgUser);

    /**
     * 修改用户管理
     * 
     * @param mgUser 用户管理
     * @return 结果
     */
    public int updateMgUser(MgUser mgUser);

    /**
     * 批量删除用户管理
     * 
     * @param ids 需要删除的用户管理主键集合
     * @return 结果
     */
    public int deleteMgUserByIds(String[] ids);

    /**
     * 删除用户管理信息
     * 
     * @param id 用户管理主键
     * @return 结果
     */
    public int deleteMgUserById(String id);

    /**
	 * 统计推荐人数
	 * @param recommendId
	 * @return
	 */
	public int countRecomendNum(long recommendNumber);
}
